package com.example.lenovo.myapplication;

import android.annotation.SuppressLint;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
private static final int MSG_PROGRESS_CHAGED = 1001;
private Button btnplay;
private Button btnpause;
private Button btnstop;

private Button btnnext;
private Button btntop;
private TextView texCur;
private TextView texTota;
private boolean isPause=false;
private MediaPlayer mediaPlayer=new MediaPlayer();
private SeekBar seekBar;
private Handler handler;
private Object message;


    @SuppressLint("WrongViewCast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnplay=findViewById(R.id.btn_play);
        btnpause=findViewById(R.id.btn_pause);
        btnstop=findViewById(R.id.btn_stop);
        seekBar=findViewById(R.id.seekbar);
        texCur=findViewById(R.id.curtext);
        texTota=findViewById(R.id.totatext);


        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int progress=seekBar.getProgress();
                int duration=mediaPlayer.getDuration();
                int position =duration*progress/100;
                mediaPlayer.seekTo(position);
            }
        });

        handler=new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message message) {
                if(message.what==MSG_PROGRESS_CHAGED){
                    int position= message.arg1;
                    int duration=message.arg2;
                    texCur.setText(getTimeStr(position));
                    texTota.setText(getTimeStr(duration));
                }

                return false;
            }
        });
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    if(mediaPlayer.isPlaying()){
                        int duration = mediaPlayer.getDuration();
                        int position = mediaPlayer.getCurrentPosition();
                        int progress = position * 100 / duration ;
                        seekBar.setProgress(progress);

                        Message message = new Message();
                        message.what = MSG_PROGRESS_CHAGED;
                        message.arg1 = position;
                        message.arg2 = duration;
                        handler.sendMessage(message);
                    }

                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                 }
            }
        }).start();


        btnplay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isPause) {
                    mediaPlayer.start();
                    isPause = false;
                } else {

                    try {
                        mediaPlayer.reset();
                        mediaPlayer.setDataSource("/mnt/shared/Other/xiaoqingwa.mp3");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            mediaPlayer.start();
                        }
                    });

                    mediaPlayer.prepareAsync();
                }
            }
        });

        btnpause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(mediaPlayer!=null && mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                    isPause=true;
                }
            }
        });


        btnstop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(mediaPlayer!=null && mediaPlayer.isPlaying()){
                    mediaPlayer.stop();
                }
            }
        });

    }
    private String getTimeStr(int time ){
        int second =time/1000;
        int min =second/60;
        second=second%60;

        StringBuffer buffer=new StringBuffer();
        if(min<10){
            buffer.append("0");
        }
        buffer.append(min);
        buffer.append(":");

        if(second < 10){
            buffer.append("0");
        }
        buffer.append(second);

        return  buffer.toString();
    }
}
